<?php
/**
 * @文件功能名称  : 配置中心模块
 * @Author      : yaoGrace
 * @Date        : 2021/12/11 19:31
 */
namespace phpGrace\models;
class config extends  \graceModel{
    public $tableName = "config";
    public $tableKey  = "id";

    /**
     * 获取所有数据
     * @return array
     */
    public function getAllList(){
        return $this->m->fetchAll();
    }

    /**
     * 批量更新，非多次循环操作数据库。高效方案：一条sql语句实现批量更新
     * @param $data $_POST数组的键值对要和表对应
     */
    public function BulkUpdate($data){
        /**
         * 参考1： https://www.cnblogs.com/zxf100/p/9369990.html
         * 参考2： https://blog.csdn.net/tannins_/article/details/102924875
         * sql 表结构
         * 字段     a        b
         * 值1    weburl   http://xxxx
         * 值2    webname  网站名称
         * 值3    email    xxx@qq.com
         * sql 批量更改的语句
            UPDATE 表名 SET
                字段名b = CASE 哪一个字段a
                    WHEN 'a.值1' THEN 'b.值1'
                    WHEN 'a.值2' THEN 'b.值2'
                    WHEN 'a.值3' THEN 'b.值3'
                END
            WHERE name IN ('a.值1','a.值2','a.值3')
         *  下面做的就是将数据拼接称这个语句，然后使用 自定义的sql命令 query 执行，操作成功返回 true, 失败返回 false
         */
        $where ='';
        $sql = 'UPDATE '.sc("db","pre").$this->tableName.' SET ';
        $sql.= 'value  = CASE name ';
        foreach ($data as $k => $v ) {
            $sql.="  WHEN '".$k."' THEN '".$v."'";
            $where.= "'".$k."',";
        }
        $sql.='END ';
        $sql.='WHERE name IN ( ';
        //把最后一个,号去掉
        $where = substr($where, 0, strrpos($where,','));
        $sql.= $where.");";
        $res=$this->m->query($sql);
        return $res;
    }

}